﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Last Found Window</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="css/default.css" rel="stylesheet" type="text/css">

</head>
<body>
<h1>“最近找到”的窗口</h1>

<p>这是被 <a href="commands/IfWinExist.htm">IfWin[Not]Exist</a>, <a href="commands/IfWinActive.htm">IfWin[Not]Active</a>, <a href="commands/WinWaitActive.htm">WinWait[Not]Active</a> 或 <a href="commands/WinWait.htm">WinWait</a> 命令最近找到的窗口。由于不需要在各种窗口命令里再重复目标窗口的 WinTitle 和 WinText 参数，所以它可以使脚本更易于创建和维护。此外，因为在首次找到目标窗口后不需要再将其搜寻一遍，所以脚本执行得更好。</p>
<p>所有窗口命令都可以使用“最近找到”的窗口，除了 <a href="commands/WinWait.htm">WinWait</a>, <a href="commands/WinActivateBottom.htm">WinActivateBottom</a> 和 <a href="commands/GroupAdd.htm">GroupAdd</a>。要使用它的话，只需省略掉全部的四个窗口参数(WinTitle, WinText, ExcludeTitle 和 ExcludeText)。</p>
<p>每个<a href="misc/Threads.htm">线程</a>都保留了它自有的“最近找到”窗口的值，就是说如果<a href="misc/Threads.htm">当前线程</a>被另一个线程打断，那么在原来的线程恢复时，它仍将保持它原本的“最近找到”窗口的值，而不是那个中断它的线程的值。</p>
<p>如果最近找到的窗口是一个隐藏的 <a href="commands/Gui.htm">Gui 窗口</a>，那么即使在 <a href="commands/DetectHiddenWindows.htm">DetectHiddenWindows</a> 处于 Off 状态时，它也能被使用。这常与&quot;<a href="commands/Gui.htm#LastFound">Gui +LastFound</a>&quot;一起使用。</p>
<p><strong>示例</strong></p>
<pre class="NoIndent">Run Notepad
WinWait 无标题 - 记事本
WinActivate  <em>;使用最近找到的窗口。</em>

IfWinExist, 无标题 - 记事本
{
    WinActivate  <em>;自动地使用上面找到的窗口。</em>
    WinMaximize  <em>;同上</em>
    Send, Some text.{Enter}
    return
}

IfWinNotExist, 计算器
    return
else
{
    WinActivate  <em>;上面的 &quot;IfWinNotExist&quot; 也为我们设置了“最近找到”的窗口。</em>
    WinMove, 40, 40  <em>;将它移动到一个新的位置。</em>
    return
}</pre>
<h2><em>WinTitle</em> 参数的其他用法</h2>
<p>如果有多种窗口符合一个窗口命令比如 <a href="commands/WinMove.htm">WinMove</a> 的 WinTitle/Text 条件，那么在窗口堆层次中位于其它窗口上面的那个窗口将被使用。例如，如果激活的/最前面的窗口匹配条件，就会用它，即使它下面还有其它匹配的窗口。</p>
<p><strong>激活的窗口 (A)</strong>: 几乎所有的窗口命令都能被告知对激活的窗口进行操作，只要指定它们的 WinTitle 参数为字母 A 并且省略掉 WinText, ExcludeTitle 和 ExcludeText。在下例中，Win+上箭头 变成一个最大化当前激活窗口的热键: <em>#Up::WinMaximize A</em></p>
<p><strong><a name="class"></a>窗口类 (ahk_class)</strong>: 通过 Window Spy 显示的或者由 <a href="commands/WinGetClass.htm">WinGetClass</a> 获得的类名都能使所有的窗口命令对一个窗口类进行操作。在下例中，一个分割视图的资源管理器窗口（译注：即左侧为文件夹树）将被激活: <em>WinActivate ahk_class ExploreWClass</em></p>
<p><strong><a name="id"></a>唯一 ID/HWND (ahk_id)</strong>: 通过唯一 ID 编号，所有的窗口命令都能对特定的窗口或者控件进行操作。例如：<em>WinActivate ahk_id %VarContainingID%</em>。一个窗口的 ID 一般通过 <a href="commands/IfWinExist.htm">WinExist()</a> 或者 <a href="commands/WinGet.htm">WinGet</a> 来取得。一个控件的 ID 一般通过 <a href="commands/ControlGet.htm#Hwnd">ControlGet Hwnd</a>, <a href="commands/MouseGetPos.htm">MouseGetPos</a> 或 <a href="commands/DllCall.htm">DllCall</a> 来取得。而且，即使控件是隐藏的，ahk_id 也将对它们进行操作；就是说，<a href="commands/DetectHiddenWindows.htm">DetectHiddenWindows</a> 的设置无关紧要。</p>
<p><strong><a name="pid"></a>进程 ID (ahk_pid)</strong>: 所有的窗口命令都能对属于一个进程标识符(PID)的窗口进行操作。例如，<em>WinClose ahk_pid %VarContainingPID%</em> 会关闭那个进程的最上层窗口。PID 能通过 <a href="commands/WinGet.htm">WinGet</a> 或 <a href="commands/Run.htm">Run</a> 或 <a href="commands/Process.htm">Process</a> 来获得。</p>
<p><strong><a name="group"></a>窗口组 (ahk_group)</strong>: 通过给 <em>WinTitle</em> 参数指定 <em>ahk_group MyGroupName</em>，所有的窗口命令都能对属于一个<a href="commands/GroupAdd.htm">窗口组</a>的窗口进行操作。<a href="commands/WinMinimize.htm">WinMinimize</a>, <a href="commands/WinMaximize.htm">WinMaximize</a>, <a href="commands/WinRestore.htm">WinRestore</a>, <a href="commands/WinHide.htm">WinHide</a>, <a href="commands/WinShow.htm">WinShow</a>, <a href="commands/WinClose.htm">WinClose</a> 和 <a href="commands/WinKill.htm">WinKill</a> 命令会对组内<strong>所有的</strong>窗口起作用。相比之下，其它窗口命令例如 <a href="commands/WinActivate.htm">WinActivate</a> 和 <a href="commands/IfWinExist.htm">IfWinExist</a> 将只对组内最上层的窗口进行操作。</p>
<p><a name="multi"></a><strong>多重条件</strong>: 和上面段落中的 ahk_group (其扩大了搜索)相比，只要在 WinTitle 参数中指定多个条件就能缩小搜索范围。在下例中，脚本等待标题包含 <em>My File.txt</em> <strong>以及</strong>类是 <em>Notepad</em> 的窗口出现:</p>
<pre>WinWait <strong>My File.txt</strong> ahk_class <strong>Notepad</strong>
WinActivate  <em>;激活它找到的窗口。</em></pre>
<p>当使用这方法时，应该首先列出标题的文字(如果有的话就需要)，后跟一个或多个附加的条件。超出首个的条件必须精确地用一个空格或者 tab 来与前一个分开(任何其他的空格或 tab 将被看作前一个条件的一部分)。</p>

</body>
</html>
